//Vuex 允许我们将 store 分割成模块（module）。
//每个模块拥有自己的 state、mutation、action、getter
//每个模块其实是一个对象,暴露出去将来放在new Vuex.Store的配置项中

export default {
    //添加命名空间,方便我们使用辅助函数获取
    namespaced:true,
    state:{
        num:4
    },
    getters:{
        doubleNum(state){
            return state.num*2
        }
    },
    mutations:{
        // 每次加1
        increment(state){
            state.num++
        },
        // 每次加n
        incrementN(state,{n}){
            state.num+=n
        }
    },
    actions:{
        incrementWait({commit}){
            setTimeout(()=>{
                commit("increment")
            },1000)
        },
        incrementNWait({commit},payload){
            setTimeout(()=>{
                commit("incrementN",payload)
            },1000)
        }
    }
}